﻿#pragma once

# if defined(TXR_ALGO_DLM_CLS_V2_O_LIB)
#  define TXR_ALGO_DLM_CLS_V2_O_EXPORT Q_DECL_EXPORT
# else
#  define TXR_ALGO_DLM_CLS_V2_O_EXPORT Q_DECL_IMPORT
# endif
#include "../txr_algo_dlm_cls/txr_algo_dlm_cls_impl.h"

namespace txr_algo_dlm_cls
{
	// 前向声明推理类
	class InferClsV2;

	/**
	 * @brief OpenVINO版本的分类模型V2实现类
	 * @details 继承自TxrAlgoDlmClsImpl基类,实现了分类模型的具体功能
	 */
	class TxrAlgoDlmClsV2_o : public TxrAlgoDlmClsImpl
	{
	public:
		/**
		 * @brief 构造函数
		 */
		TxrAlgoDlmClsV2_o();

		/**
		 * @brief 虚析构函数
		 */
		virtual ~TxrAlgoDlmClsV2_o();

		/**
		 * @brief 加载分类模型
		 * @param cfg 模型配置信息
		 * @return 加载是否成功
		 */
		tk_bool Load(st_dlm_cfg& cfg) override;

		/**
		 * @brief 释放资源
		 */
		void Release();

		/**
		 * @brief 获取批处理大小
		 * @return 返回模型支持的批处理大小
		 */
		tk_int32 BatchSize() override;

		/**
		 * @brief 执行图像分类检测
		 * @param p_unit 检测单元数组
		 * @param size 数组大小
		 */
		void Detect(st_detect_unit* p_unit, tk_int32 size) override;

	private:
		InferClsV2* m_p_infer;  ///< 推理器对象指针
	};
}//namespace txr_algo_dlm_cls
